home *** CD-ROM | disk | FTP | other *** search
- package javax.swing.plaf.basic;
-
- import java.awt.Color;
- import java.awt.Component;
- import java.awt.Container;
- import java.awt.Dimension;
- import java.awt.Graphics;
- import java.awt.Point;
- import java.awt.Rectangle;
- import java.awt.event.ActionListener;
- import java.awt.event.FocusListener;
- import java.awt.event.KeyListener;
- import java.util.Enumeration;
- import java.util.Hashtable;
- import javax.swing.CellRendererPane;
- import javax.swing.JComponent;
- import javax.swing.JScrollPane;
- import javax.swing.JTable;
- import javax.swing.KeyStroke;
- import javax.swing.ListSelectionModel;
- import javax.swing.LookAndFeel;
- import javax.swing.UIManager;
- import javax.swing.event.MouseInputListener;
- import javax.swing.plaf.ComponentUI;
- import javax.swing.plaf.TableUI;
- import javax.swing.plaf.UIResource;
- import javax.swing.table.JTableHeader;
- import javax.swing.table.TableCellRenderer;
- import javax.swing.table.TableColumn;
- import javax.swing.table.TableColumnModel;
-
- public class BasicTableUI extends TableUI {
- protected JTable table;
- protected CellRendererPane rendererPane;
- protected KeyListener keyListener;
- protected FocusListener focusListener;
- protected MouseInputListener mouseInputListener;
- private Hashtable registeredKeyStrokes = new Hashtable();
-
- // $FF: synthetic method
- static void access$0(JTable var0, int var1, int var2, boolean var3, boolean var4) {
- updateSelection(var0, var1, var2, var3, var4);
- }
-
- // $FF: synthetic method
- static Hashtable access$1(BasicTableUI var0) {
- return var0.registeredKeyStrokes;
- }
-
- protected FocusListener createFocusListener() {
- return new FocusHandler(this);
- }
-
- protected KeyListener createKeyListener() {
- return new KeyHandler(this);
- }
-
- protected MouseInputListener createMouseInputListener() {
- return new MouseInputHandler(this);
- }
-
- private Dimension createTableSize(long var1) {
- int var3 = this.table.getRowCount() * (this.table.getRowHeight() + this.table.getRowMargin());
- int var4 = this.table.getColumnModel().getColumnMargin() * this.table.getColumnCount();
- long var5 = Math.abs(var1) + (long)var4;
- if (var5 > 2147483647L) {
- var5 = 2147483647L;
- }
-
- return new Dimension((int)var5, var3);
- }
-
- public static ComponentUI createUI(JComponent var0) {
- return new BasicTableUI();
- }
-
- public Dimension getMaximumSize(JComponent var1) {
- long var2 = 0L;
-
- TableColumn var5;
- for(Enumeration var4 = this.table.getColumnModel().getColumns(); var4.hasMoreElements(); var2 += (long)var5.getMaxWidth()) {
- var5 = (TableColumn)var4.nextElement();
- }
-
- return this.createTableSize(var2);
- }
-
- public Dimension getMinimumSize(JComponent var1) {
- long var2 = 0L;
-
- TableColumn var5;
- for(Enumeration var4 = this.table.getColumnModel().getColumns(); var4.hasMoreElements(); var2 += (long)var5.getMinWidth()) {
- var5 = (TableColumn)var4.nextElement();
- }
-
- return this.createTableSize(var2);
- }
-
- public Dimension getPreferredSize(JComponent var1) {
- long var2 = 0L;
-
- TableColumn var5;
- for(Enumeration var4 = this.table.getColumnModel().getColumns(); var4.hasMoreElements(); var2 += (long)var5.getPreferredWidth()) {
- var5 = (TableColumn)var4.nextElement();
- }
-
- return this.createTableSize(var2);
- }
-
- protected void installDefaults() {
- LookAndFeel.installColorsAndFont(this.table, "Table.background", "Table.foreground", "Table.font");
- Color var1 = this.table.getSelectionBackground();
- if (var1 == null || var1 instanceof UIResource) {
- this.table.setSelectionBackground(UIManager.getColor("Table.selectionBackground"));
- }
-
- Color var2 = this.table.getSelectionForeground();
- if (var2 == null || var2 instanceof UIResource) {
- this.table.setSelectionForeground(UIManager.getColor("Table.selectionForeground"));
- }
-
- Color var3 = this.table.getGridColor();
- if (var3 == null || var3 instanceof UIResource) {
- this.table.setGridColor(UIManager.getColor("Table.gridColor"));
- }
-
- Container var4 = this.table.getParent();
- if (var4 != null) {
- var4 = ((Component)var4).getParent();
- if (var4 != null && var4 instanceof JScrollPane) {
- LookAndFeel.installBorder((JScrollPane)var4, "Table.scrollPaneBorder");
- }
- }
-
- }
-
- protected void installKeyboardActions() {
- byte var1 = 1;
- byte var2 = 2;
- int var3 = var1 | var2;
- this.registerKey(39, 0, 1, 0);
- this.registerKey(37, 0, -1, 0);
- this.registerKey(40, 0, 0, 1);
- this.registerKey(38, 0, 0, -1);
- this.registerKey("KP_RIGHT", 1, 0);
- this.registerKey("KP_LEFT", -1, 0);
- this.registerKey("KP_DOWN", 0, 1);
- this.registerKey("KP_UP", 0, -1);
- this.registerKey(39, var1, 1, 0);
- this.registerKey(37, var1, -1, 0);
- this.registerKey(40, var1, 0, 1);
- this.registerKey(38, var1, 0, -1);
- this.registerKey("shift KP_RIGHT", 1, 0);
- this.registerKey("shift KP_LEFT", -1, 0);
- this.registerKey("shift KP_DOWN", 0, 1);
- this.registerKey("shift KP_UP", 0, -1);
- this.registerScrollKey(33, 0, false, true, false);
- this.registerScrollKey(34, 0, true, true, false);
- this.registerScrollKey(36, 0, false, false, true);
- this.registerScrollKey(35, 0, true, false, true);
- this.registerScrollKey(33, var1, false, true, false);
- this.registerScrollKey(34, var1, true, true, false);
- this.registerScrollKey(36, var1, false, false, true);
- this.registerScrollKey(35, var1, true, false, true);
- this.registerScrollKey(33, var2, false, false, false);
- this.registerScrollKey(34, var2, true, false, false);
- this.registerScrollKey(36, var2, false, true, true);
- this.registerScrollKey(35, var2, true, true, true);
- this.registerScrollKey(33, var3, false, false, false);
- this.registerScrollKey(34, var3, true, false, false);
- this.registerScrollKey(36, var3, false, true, true);
- this.registerScrollKey(35, var3, true, true, true);
- this.registerKey(9, 0, 1, 0, true, false, true);
- this.registerKey(9, var1, -1, 0, true, false, true);
- this.registerKey(10, 0, 0, 1, true, false, true);
- this.registerKey(10, var1, 0, -1, true, false, true);
- this.registerKeyboardAction(new 1(this), KeyStroke.getKeyStroke(65, var2));
- this.registerKeyboardAction(new 2(this), KeyStroke.getKeyStroke(27, 0));
- this.registerKeyboardAction(new 3(this), KeyStroke.getKeyStroke(113, 0));
- }
-
- protected void installListeners() {
- this.focusListener = this.createFocusListener();
- this.keyListener = this.createKeyListener();
- this.mouseInputListener = this.createMouseInputListener();
- this.table.addFocusListener(this.focusListener);
- this.table.addKeyListener(this.keyListener);
- this.table.addMouseListener(this.mouseInputListener);
- this.table.addMouseMotionListener(this.mouseInputListener);
- }
-
- public void installUI(JComponent var1) {
- this.table = (JTable)var1;
- this.rendererPane = new CellRendererPane();
- this.table.add(this.rendererPane);
- this.installDefaults();
- this.installListeners();
- this.installKeyboardActions();
- }
-
- private int lastVisibleRow(Rectangle var1) {
- int var2 = this.table.rowAtPoint(new Point(0, var1.y + var1.height - 1));
- if (var2 == -1) {
- var2 = this.table.getRowCount() - 1;
- }
-
- return var2;
- }
-
- public void paint(Graphics var1, JComponent var2) {
- Rectangle var3 = var1.getClipBounds();
- Rectangle var4 = new Rectangle(var3);
- int var5 = this.table.getColumnModel().getTotalColumnWidth();
- var4.width = Math.min(var4.width, var5);
- var1.setClip(var4);
- this.paintGrid(var1);
- int var6 = this.table.rowAtPoint(new Point(0, var4.y));
- int var7 = this.lastVisibleRow(var4);
- Rectangle var8 = new Rectangle(0, 0, var5, this.table.getRowHeight() + this.table.getRowMargin());
- var8.y = var6 * var8.height;
-
- for(int var9 = var6; var9 <= var7; ++var9) {
- if (var8.intersects(var4)) {
- this.paintRow(var1, var9);
- }
-
- var8.y += var8.height;
- }
-
- var1.setClip(var3);
- }
-
- private void paintCell(Graphics var1, Rectangle var2, int var3, int var4) {
- int var5 = this.table.getRowMargin();
- int var6 = this.table.getColumnModel().getColumnMargin();
- var2.setBounds(var2.x + var6 / 2, var2.y + var5 / 2, var2.width - var6, var2.height - var5);
- if (this.table.isEditing() && this.table.getEditingRow() == var3 && this.table.getEditingColumn() == var4) {
- Component var9 = this.table.getEditorComponent();
- var9.setBounds(var2);
- var9.validate();
- } else {
- TableCellRenderer var7 = this.table.getCellRenderer(var3, var4);
- Component var8 = this.table.prepareRenderer(var7, var3, var4);
- if (var8.getParent() == null) {
- this.rendererPane.add(var8);
- }
-
- this.rendererPane.paintComponent(var1, var8, this.table, var2.x, var2.y, var2.width, var2.height, true);
- }
-
- var2.setBounds(var2.x - var6 / 2, var2.y - var5 / 2, var2.width + var6, var2.height + var5);
- }
-
- private void paintGrid(Graphics var1) {
- var1.setColor(this.table.getGridColor());
- if (this.table.getShowHorizontalLines()) {
- this.paintHorizontalLines(var1);
- }
-
- if (this.table.getShowVerticalLines()) {
- this.paintVerticalLines(var1);
- }
-
- }
-
- private void paintHorizontalLines(Graphics var1) {
- Rectangle var2 = var1.getClipBounds();
- int var3 = this.table.rowAtPoint(new Point(0, var2.y));
- int var4 = this.lastVisibleRow(var2);
- int var5 = this.table.getColumnModel().getTotalColumnWidth();
- int var6 = this.table.getRowHeight() + this.table.getRowMargin();
- int var7 = var6 * var3;
-
- for(int var8 = var3; var8 <= var4; ++var8) {
- var7 += var6;
- var1.drawLine(0, var7 - 1, var5 - 1, var7 - 1);
- }
-
- }
-
- private void paintRow(Graphics var1, int var2) {
- Rectangle var3 = var1.getClipBounds();
- int var4 = 0;
- boolean var5 = false;
- int var6 = -1;
- Rectangle var7 = null;
- Dimension var8 = this.table.getIntercellSpacing();
- JTableHeader var9 = this.table.getTableHeader();
- Rectangle var10 = new Rectangle();
- var10.height = this.table.getRowHeight() + var8.height;
- var10.y = var2 * var10.height;
-
- for(Enumeration var11 = this.table.getColumnModel().getColumns(); var11.hasMoreElements(); ++var4) {
- TableColumn var12 = (TableColumn)var11.nextElement();
- var10.width = var12.getWidth() + var8.width;
- if (var10.intersects(var3)) {
- var5 = true;
- if (var9 != null && var12 == var9.getDraggedColumn()) {
- var1.setColor(this.table.getParent().getBackground());
- var1.fillRect(var10.x, var10.y, var10.width, var10.height);
- var7 = new Rectangle(var10);
- var6 = var4;
- } else {
- this.paintCell(var1, var10, var2, var4);
- }
- } else if (var5) {
- break;
- }
-
- var10.x += var10.width;
- }
-
- if (var6 != -1 && var7 != null) {
- var7.x += var9.getDraggedDistance();
- var1.setColor(this.table.getBackground());
- var1.fillRect(var7.x, var7.y, var7.width, var7.height);
- var1.setColor(this.table.getGridColor());
- int var16 = var7.x;
- int var13 = var7.y;
- int var14 = var16 + var7.width - 1;
- int var15 = var13 + var7.height - 1;
- if (this.table.getShowVerticalLines()) {
- var1.drawLine(var14, var13, var14, var15);
- }
-
- if (this.table.getShowHorizontalLines()) {
- var1.drawLine(var16, var15, var14, var15);
- }
-
- this.paintCell(var1, var7, var2, var6);
- }
-
- }
-
- private void paintVerticalLines(Graphics var1) {
- int var2 = 0;
- int var3 = this.table.getColumnCount();
- TableColumnModel var4 = this.table.getColumnModel();
- int var5 = var4.getColumnMargin();
- int var6 = this.table.getRowHeight() + this.table.getRowMargin();
- int var7 = var6 * this.table.getRowCount();
-
- for(int var8 = 0; var8 < var3; ++var8) {
- var2 += var4.getColumn(var8).getWidth() + var5;
- var1.drawLine(var2 - 1, 0, var2 - 1, var7 - 1);
- }
-
- }
-
- private void registerKey(int var1, int var2, int var3, int var4) {
- boolean var5 = (var2 & 2) != 0;
- boolean var6 = (var2 & 1) != 0;
- this.registerKey(var1, var2, var3, var4, var5, var6, false);
- }
-
- private void registerKey(int var1, int var2, int var3, int var4, boolean var5, boolean var6, boolean var7) {
- this.registerKeyboardAction(new NavigationalAction(var3, var4, var5, var6, var7), KeyStroke.getKeyStroke(var1, var2));
- }
-
- private void registerKey(String var1, int var2, int var3) {
- KeyStroke var4 = KeyStroke.getKeyStroke(var1);
- int var5 = var4.getModifiers();
- boolean var6 = (var5 & 2) != 0;
- boolean var7 = (var5 & 1) != 0;
- this.registerKey(var1, var2, var3, var6, var7, false);
- }
-
- private void registerKey(String var1, int var2, int var3, boolean var4, boolean var5, boolean var6) {
- this.registerKeyboardAction(new NavigationalAction(var2, var3, var4, var5, var6), KeyStroke.getKeyStroke(var1));
- }
-
- private void registerKeyboardAction(ActionListener var1, KeyStroke var2) {
- this.registeredKeyStrokes.put(var2, var1);
- this.table.registerKeyboardAction(var1, var2, 1);
- }
-
- private void registerScrollKey(int var1, int var2, boolean var3, boolean var4, boolean var5) {
- boolean var6 = (var2 & 1) != 0;
- this.registerKeyboardAction(new PagingAction((4)null, var6, var3, var4, var5), KeyStroke.getKeyStroke(var1, var2));
- }
-
- protected void uninstallDefaults() {
- }
-
- protected void uninstallKeyboardActions() {
- Enumeration var1 = this.registeredKeyStrokes.keys();
-
- while(var1.hasMoreElements()) {
- KeyStroke var2 = (KeyStroke)var1.nextElement();
- this.table.unregisterKeyboardAction(var2);
- }
-
- }
-
- protected void uninstallListeners() {
- this.table.removeFocusListener(this.focusListener);
- this.table.removeKeyListener(this.keyListener);
- this.table.removeMouseListener(this.mouseInputListener);
- this.table.removeMouseMotionListener(this.mouseInputListener);
- this.focusListener = null;
- this.keyListener = null;
- this.mouseInputListener = null;
- }
-
- public void uninstallUI(JComponent var1) {
- this.uninstallDefaults();
- this.uninstallListeners();
- this.uninstallKeyboardActions();
- this.table.remove(this.rendererPane);
- this.rendererPane = null;
- this.table = null;
- }
-
- private static void updateSelection(JTable var0, int var1, int var2, boolean var3, boolean var4) {
- Rectangle var5 = var0.getCellRect(var1, var2, false);
- if (var5 != null) {
- ((JComponent)var0).scrollRectToVisible(var5);
- }
-
- ListSelectionModel var6 = var0.getSelectionModel();
- ListSelectionModel var7 = var0.getColumnModel().getSelectionModel();
- updateSelectionModel(var7, var2, var3, var4);
- updateSelectionModel(var6, var1, var3, var4);
- }
-
- private static void updateSelectionModel(ListSelectionModel var0, int var1, boolean var2, boolean var3) {
- if (!var3) {
- if (!var2) {
- var0.setSelectionInterval(var1, var1);
- } else if (var0.isSelectedIndex(var1)) {
- var0.removeSelectionInterval(var1, var1);
- } else {
- var0.addSelectionInterval(var1, var1);
- }
- } else {
- var0.setLeadSelectionIndex(var1);
- }
-
- }
- }
-